package com.hb.web;

import com.hb.domain.Spittle;
import com.hb.repository.SpittleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
@RequestMapping("/spittles")
public class SpittleController {
    private static final String MAX_LONG_AS_STRING = "9223372036854775807";

    private SpittleRepository spittleRepository;

    @Autowired
    public SpittleController(SpittleRepository spittleRepository) {
        this.spittleRepository = spittleRepository;
    }

    /**
     * 当发起对 “/spittles” 的 GET 请求时，将会调用 spittles() 方法。它会查找并返回 Spittle 列表，而这个列表会通过注入的 SpittleRepository 获取到。
     * 列表会放到模型中，用于视图的渲染。对于基于浏览器的 Web 应用，这可能意味着模型数据会渲染到 HTML 页面中。但是，我们现在讨论的是创建 REST API。在这种情况下，
     * HTML 并不是合适的数据表述形式。
     * @param max
     * @param count
     * @return
     */
    @RequestMapping(method = RequestMethod.GET)
    public List<Spittle> spittles(
            @RequestParam(value = "max", defaultValue = MAX_LONG_AS_STRING) long max,
            @RequestParam(value = "count", defaultValue = "20") int count) {
        return spittleRepository.findSpittles(max, count);
    }
}
